#!/bin/bash

echo "开始构建镜像并启动容器"
# 公共路径 要和Jenkins远程文件路径一致
common_path=/planet/programs/planet-user-middle-serve
# 服务名一般和镜像容器名一致，避免出问题
server_name=bobo-planet-user-middle-serve
# 镜像名称，获取执行shell脚本时第一个参数，不传默认
# 注：镜像、容器名称必须全部为小写
img_name=${1:-"planet-user-middle-serve"}":latest"
# 容器名称或项目名
app_name=${1:-"planet-user-middle-serve"}
# docker暴露端口
port=${2:-"30021"}

# shellcheck disable=SC2164
# 进入到该目录，不然dockerfile中ADD时找不到文件路径(jenkins执行shell的默认路径是 /root可在当前shell中pwd打印查看)
cd $common_path

# 获得docker容器 id和镜像id，查询 app_name容器信息，并获取列表第一个($1)参数
# shellcheck disable=SC2006
container_id=`docker ps -a | grep "$app_name" | awk '{print $1 }'`
# shellcheck disable=SC2006
img_id=`docker images | grep "$app_name" | awk '{print $3 }'`
# 如果容器正在运行，停止它
if [ "$container_id"x != ""x ]; then
    docker stop "$container_id"
fi
# 删除容器
if [ "$container_id"x != ""x ]; then
    docker rm "$container_id"
fi
# 删除镜像
if [ "$img_id"x != ""x ]; then
    docker rmi "$img_id"
fi

echo "当前路径："
pwd

# 生成镜像,可用 -f Dockerfile 指定文件名称
docker build -t "$img_name" -f ./Dockerfile .

# 启动镜像  指定网络
docker run -d --name "$app_name" -p "$port":"$port" -v $common_path/logs:/planet/programs/$server_name/logs --network="host" "$img_name"
